-
Notifications
You must be signed in to change notification settings - Fork 575
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
i#3544 RV64: Rebase the dcontext pointer. #7235
base: master
Are you sure you want to change the base?
Conversation
The dcontext_t struct is larger than the biggest valid displacement of the load and store instructions. By rebasing the pointer by 0x800, we van access the entire struct, because the dispacement can be in the renge of -0x800 to 0x7ff.
Also worked around build failure on windows
I know that these patches are quite "hacky". However, I could not find a better way to work around some issues. |
FYI I am out of office today; will take a look tomorrow. |
The failure is the sourceware.org network issue. Several flaky issues were fixed in the last several days: probably worth merging the latest from master. |
Renamed some macros, added helper macros to replace raw arithmetic operations, Added missing DCONTEXT_ACTUAL_TO_TLS_OFFSET.
This alpine failure just appeared: #7284. Triager should be disabling that job as it's blocking everything. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apart from the typo, I think this PR is ready for merging. @mariospaok4 could you synchronize with master after Alpine workflow is fixed (#7289)? Then we can get this PR merged.
For RISC-V the dcontext_t struct is larger than the biggest valid displacement of the load and store instructions.
By rebasing the pointer kept in spill_state_t's TLS slot by 0x800, we can access the entire struct, because the displacement can be in the range of -0x800 to 0x7ff. Architectures other than RV64, are unaffected by these changes.